拡張SDK
Extension SDKを使用すると、Cで独自の関数を実装し、IECアプリケーションからそれらを呼び出すことができます。
この接続では、Cコードは個別の動的コンポーネントの形式でランタイムシステムに統合されます(shared object
)。
含めるには2つの方法があります。
コントローラで準備:動的コンポーネントはすでに次のように構成されています CODESYS ランタイムシステム(
shared object
存在し、Linuxシステムで構成されています)。次に、それぞれのIECライブラリのみが必要です。統合された動的コンポーネントを備えたIECライブラリの形式。 Linuxシステム自体で何も準備する必要はありません。 IECライブラリを使用する場合、動的コンポーネントは自動的に CODESYS ランタイムシステムと使用。
どちらの場合も、ユーザーはを作成できる必要があります shared object
これは、ランタイムシステム(x64 / ARM6 / ARM7 / AARCH64)のアーキテクチャに適しています。ExtensionSDKは、この種の動的コンポーネントの作成をサポートします。 (shared object
)。
次に、両方のバリアントのライブラリと動的コンポーネントを作成する方法について説明します。
開発環境
開ける CODESYS 新しいライブラリを作成します。
ライブラリのタイトルを設定します(プロジェクト情報、 概要 タブ)そして同じ名前でライブラリを保存します。
必要な機能を追加し、それらにマークを付けます 外部実装。
プロジェクトナビゲータの関数のコンテキストメニューで、をクリックします。 プロパティ。に 建てる タブで、 外部実装。
注:関数には「
_cext
" 名前に。
次に、* cファイルと* m4ファイルを生成します。
クリック
。選択する M4インターフェースファイル と Cスタブファイル。
保存場所を選択します。
Linux
拡張SDKを、ターゲットシステムに対応するコンパイル環境を持つLinuxシステムにコピーします。
デフォルトでは、ExtensionSDKは次の場所にあります。
C:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\ExtensionSDK
. 以下のステップでは、このディレクトリを<SDK DIR>
呼ぶ。C実装を作成する新しいフォルダーを作成します。このフォルダは次の場所にあります
<PROJECT DIR>
。案内する
<PROJECT DIR>
実行します:$ make -f <SDKDIR>/makefile newproject
開発環境で作成した* cおよび* m4ファイルをにコピーします
<PROJECT DIR>
。Cで関数を実装します。
共有オブジェクトを作成します。
$ make all
The
shared object
生成され、に配置されます<PROJECT DIR>/out/libCmpMyTest.so
。
その結果、動的コンポーネントが作成され、IECライブラリを介してIECアプリケーションから呼び出すことができるようになりました。ビルドプロセスの詳細(make
)makefilesおよび README file
拡張SDKで。
次に、コンポーネントを含める次の2つの方法のいずれかを決定します。
動的コンポーネントを含む
コンポーネントを含めるには、次のオプションがあります。
ターゲットデバイスに動的コンポーネントを含める
このメソッドを使用すると、以前にCで作成した共有オブジェクトをランタイムシステムに含めることができます。ユーザーに追加のシステム権限は必要ありません。ライブラリは、使い慣れた方法を使用してデバイスにロールアウトできます。
上で作成した共有オブジェクトをランタイムシステムにコピーします。
共有オブジェクトをにコピーします
/usr/lib/
または、システムによってライブラリが検出される同等のライブラリディレクトリ。ランタイムシステムを停止します(例:
$ sudo /etc/init.d/codesyscontrol stop
)。開ける
/etc/CODESYSControl_User.cfg
管理者権限を持つ:$ sudo nano /etc/CODESYSControl_User.cfg
の中に
[ComponentManager]
セクションで、作成した共有オブジェクトを追加します。[ComponentManager] Component.1=CmpFirstTest Component.2=CmpSomeOtherComponent ...
注:番号は増分番号であり、既存のコンポーネントと競合してはなりません。
ランタイムシステムを起動します。
$ sudo /etc/init.d/codesyscontrol start
これで、コンポーネントがロードされているかどうかを確認できます。
$ cat /tmp/codesyscontrol.log
動的コンポーネントをIECライブラリに含める
「Cコード統合」機能を使用して、動的コンポーネントをIECライブラリに追加します。詳細については、を参照してください。 Cコード統合 一般的なヘルプで。
IECライブラリを開きます。
の POU、を追加します C-実装ライブラリ 物体。
このオブジェクトに、 デバイスのオブジェクトファイル:
以前に作成した動的コンポーネント(ファイル)を選択して追加します。
適切なコンポーネント名を指定してください。
適切なデバイスを選択してください。
これで、選択したデバイスでこのライブラリを使用すると、動的コンポーネントがランタイムシステムに自動的に追加され、ライブラリのPOUを使用して呼び出すことができます。
他の
制限:
Extension SDKでは、Cコードのみを含めることができます。
デバッガーを使用してCコードを調べたりデバッグしたりすることはできません(たとえば、プログラミングシステムの場合など)。
Cコードは、ランタイムシステムまたはIECアプリケーションと「相互作用」することはできません。これの意味は:
IECアプリケーションの変数への自動アクセスはできません。
ランタイムシステムの機能にアクセスすることはできません。ただし、IECアプリケーションの変数へのアクセスは、Cコードで実装された関数に渡すことでもちろん可能です。
by reference
(たとえば、経由POINTER
)。
Linuxのメンバーとしてのみインターフェースを使用する | 番号 |
プロセス分離 | 番号 |